Soy relativamente nuevo en passport.js y he estado siguiendo una guía en línea junto con la documentación aquí: https://github.com/saintedlama/passport-local-mongoose . Sin embargo, cuando inicio mi servidor en webstorm, recibo constantemente el error: TypeError: passport.serialize is not a function. También vi esta publicación similar: Passport.js .authenticate() throwing TypeError: undefined no es una función , pero mi problema es diferente al resuelto en esa pregunta. Mi código relevante está a continuación:
usuario.js
var mongoose = require('mongoose'), Schema = mongoose.Schema, passportLocalMongoose = require('passport-local-mongoose'); var User = new Schema({ username: String, password: String, studentID: String, grades: [{ subject: String, grade: String }] }); User.plugin(passportLocalMongoose); module.exports = mongoose.model('User', User);aplicación.js
var express = require('express'); var path = require('path'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); var routes = require('./routes/index'); var LocalStrategy = require('passport-local').Strategy; var passport = require('passport'); var request = require('request'); var cheerio = require('cheerio'); var User = require('./models/user'); var app = express(); passport.initialize(); app.use(passport.initialize()); app.use(passport.session()); passport.use(new LocalStrategy(User.authenticate())); passport.serialize(User.serializeUser()); passport.deserializeUser(User.deserializeUser());¡Toda ayuda es apreciada!
No hay función de pasaporte . serialización. El correcto es pasaporte.serializeUser .
Este es un código cortado del pasaporte.
Authenticator.prototype.serializeUser = function(fn, req, done) { ...y
Authenticator.prototype.deserializeUser = function(fn, req, done) { ...Creo que es tu problema.
Espero que pueda ayudar.